package Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class SIS_ACCEDIDOS {

    private int ID;
    private String URL;
    private String ALIAS;
    private int ID_USUARIO;
    private int ACCESO;
    private Conexion con = null;

    public SIS_ACCEDIDOS() {
    }

    public SIS_ACCEDIDOS(String URL, int ID_USUARIO, String ALIAS) {
        this.URL = URL;
        this.ALIAS = ALIAS;
        this.ID_USUARIO = ID_USUARIO;
    }

    public boolean Insertar() throws SQLException {
        cambiarValores();
        String consulta = "insert into BROKER.SIS_ACCEDIDOS(ID, URL, ID_USUARIO, ACCESO, ALIAS) VALUES (0,'" + URL + "'," + ID_USUARIO + ",1, '"+ALIAS+"')";
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() {
        try {
            String consulta = "delete from BROKER.SIS_ACCEDIDOS where ID= " + getID();
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    
    public boolean EliminarViejo() throws SQLException {
            String consulta = "delete from BROKER.SIS_ACCEDIDOS where ID_USUARIO = " + getID_USUARIO() +" AND ACCESO = 1";
            con.EjecutarSentencia(consulta);
            return true;
    }
    
    public boolean cambiarValores() throws SQLException {
        List<SIS_ACCEDIDOS> lista = this.TodosXUsuario();               
        for (int i = lista.size(); i > 0 ; i--) {
                String consulta = "update BROKER.SIS_ACCEDIDOS  set ACCESO = "+(i+1)+" where ID_USUARIO = " + getID_USUARIO() +" AND ACCESO = "+i;
                con.EjecutarSentencia(consulta);
        }
        if(lista.size()>=3)
        {
            String consulta = "delete from BROKER.SIS_ACCEDIDOS where ID_USUARIO = " + getID_USUARIO() +" AND ACCESO = 4";
            con.EjecutarSentencia(consulta);
        }        
        return true;
    }

    public List<SIS_ACCEDIDOS> Todos() {
        try {
            String consulta = "select * from BROKER.SIS_ACCEDIDOS";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public List<SIS_ACCEDIDOS> TodosXUsuario() {
        try {
            String consulta = "select * from BROKER.SIS_ACCEDIDOS where ID_USUARIO = "+getID_USUARIO()+" ORDER BY (ACCESO)";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public List<SIS_ACCEDIDOS> Cargar(ResultSet rs) {
        try {
            List<SIS_ACCEDIDOS> lista = new ArrayList<SIS_ACCEDIDOS>();
            while (rs.next()) {
                SIS_ACCEDIDOS objeto = new SIS_ACCEDIDOS();
                objeto.setID(rs.getInt("ID"));
                objeto.setURL(rs.getString("URL"));
                objeto.setALIAS(rs.getString("ALIAS"));
                objeto.setID_USUARIO(rs.getInt("ID_USUARIO"));
                objeto.setACCESO(rs.getInt("ACCESO"));
                objeto.setCon(con);
                lista.add(objeto);
            }
            return lista;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getURL() {
        return URL;
    }

    public void setURL(String URL) {
        this.URL = URL;
    }

    public int getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(int ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public int getACCESO() {
        return ACCESO;
    }

    public void setACCESO(int ACCESO) {
        this.ACCESO = ACCESO;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }

    public String getALIAS() {
        return ALIAS;
    }

    public void setALIAS(String ALIAS) {
        this.ALIAS = ALIAS;
    }        
    
}
